package com.shan.design.template;

import java.io.Console;

/**
 * description
 * 账户抽象类，有差异的方法交给子类
 *
 * @author shanzheng <br/>
 * @date 18:49 2018/11/27.<br/>
 * Modified By <br/>
 */
public abstract class Account {
    //基本方法——具体方法

    /***
     * Description 验证账户和密码
     * @param account 账户
     * @param password 密码
     * @author shanzheng
     * date  2018/11/27
     * @return java.lang.Boolean
     */
    public Boolean validate(String account, String password) {
        System.out.println("账户：" + account + " 密码：" + password);
        //模拟登录
        if ("张无忌".equals(account) && "123456".equals(password)) {
            return true;
        } else {
            return false;
        }
    }

    //基本方法——抽象方法

    /**
     * Description 计算利息
     *
     * @param
     * @return void
     * @author shanzheng
     * date  2018/11/27
     */
    abstract void calculateInterest();

    //基本方法——具体方法

    /**
     * Description  显示
     *
     * @return void
     * @author shanzheng
     * date  2018/11/27
     */
    public void display() {
        System.out.println("显示利息！");
    }

    /**
     * Description 模板方法
     *
     * @param account
     * @param password
     * @return void
     * @author shanzheng
     * date  2018/11/27
     */
    void handle(String account, String password) {
        if (!validate(account, password)) {
            System.out.println("账户或密码错误！");
        }
        calculateInterest();
        display();
    }
}
